public class equals练习 {
    /**
     * equals与==的区别
     * @param args
     */
    public static void main(String[] args) {
        Person a=new Person("凹凸曼",13);
        Person a1=new Person("凹凸曼",13);
        System.out.println(a==a1);//false因为new了两个对象a和a1的地址值不同
        System.out.println(a.name==a.name);//true name是String类型保存常量池中值是同一个
        System.out.println(a.age==a.age);//true age是int基本类型,保存的值都是 一样的
        System.out.println(a.equals(a1));//true a和a1的值都是一样的因为比较的是被付的值
    }
}
class Person{
    String name;
    int age;
    public Person(){
        System.out.println("我是手动参加的无参构造");
    }
    public Person(String name,int age){
        super();
        this.name=name;
        this.age=age;
    }
    //需求比较两个对象的属性值,如果属性值都一样 就是同一个对象,要求equals返回true
    public boolean equals(Object obj){
        if (this==obj){
            return true;
        }if (obj==null){
            return false;
        }if (getClass()!=obj.getClass()){
            return false;
        }
        Person other=(Person)obj;
        if (age!=other.age){
            return false;
        }if (name==null){
            if (other.name!=null){
                return false;
            }
        }else if (!name.equals(other.name)){
            return  false;
        }
        return true;
    }
}
